1  '               BINOMIAL DISTRIBUTION (one-tailed)
2  '               Written by Tracy L. Gustafson, M.D.
3  '              Round Rock, Texas. Version 3.0, 1984
4 ON ERROR GOTO 5000:CHAIN MERGE "EPIMRG",5
22 DATA "BINOMIAL PROBABILITY DISTRIBUTION",18,35
30 PRINT TAB(8);"The binomial distribution provides a one-tailed exact test":PRINT "applicable when a dichotomous variable has an equal probability of occurring":PRINT TAB(27);"in each of N trials.":PRINT:AR=9:AC=56
35 PRINT TAB(27);"Enter the number of trials:"
40 LOCATE 9,56:INPUT "",XN:IF INT(XN)=XN THEN NT=XN ELSE GOSUB 165:GOTO 40
45 PRINT:PRINT TAB(11);"Enter probability of success on each trial:"
50 LOCATE 11,56:INPUT "",PS:IF ABS(PS-.5)>.5 THEN LOCATE 25,10:PRINT "Probability should be fraction between 0 and 1";:AR=11:GOSUB 170:GOTO 50
55 PRINT:PRINT TAB(15);"Enter the number of successes observed:"
60 LOCATE 13,56:INPUT "",XN:IF INT(XN)=XN THEN NO=XN ELSE AR=13:GOSUB 165:GOTO 60
65 COLOR 23:LOCATE 17,25:PRINT "CALCULATING PROBABILITY"
70 IF NO>INT(PS*NT) THEN AF=1:PS=1-PS:CO=NT-NO ELSE AF=0:CO=NO
75 QS=1-PS:F=1:LQ=LOG(QS):LP=LOG(PS):P=EXP(NT*LQ)
80 FOR T=1 TO CO:FZ=NT-T:S=T*LP+FZ*LQ
85 IF F>1E+35 OR S<-80 THEN F=LOG(F):GOTO 95
90 F=F*(FZ+1)/T:P=P+F*EXP(S):NEXT T:GOTO 110
95 FOR Z=T TO CO:FZ=(NT-Z):S=Z*LP+FZ*LQ:F=F+LOG((FZ+1)/Z)
100 IF F+S>-86 THEN P=P+EXP(F+S)
105 NEXT Z
110 FOR Z=4 TO 1 STEP -1:PLAY "MB ML O=Z; L32 B-GE-":NEXT:PLAY "L6 O1 E-"
115 LOCATE 17,1:COLOR CLR2,CLR1:PRINT TAB(8);"The probability of observing ";NO;" or ";:IF AF=1 THEN PRINT "more"; ELSE PRINT "fewer";
120 PRINT " cases ";:GOSUB 155:PRINT TAB(79):COLOR CLR1,CLR2
125 IF PS=.5 THEN P=P*2:PRINT TAB(20);"Two-tailed probability ";:GOSUB 155
130 IF NT*PS<10 OR NT*QS<10 OR P>.05 THEN 145 ELSE P$=".#####"
135 PRINT:PRINT:PRINT TAB(15);"The observed proportion of successes is  ";:PRINT USING P$;NO/NT
140 PRINT TAB(8);"Confidence limits can be calculated as:  ";:PRINT USING P$;NO/NT;:PRINT " +/- Z * ";:PRINT USING P$;SQR(PS*QS/NT)
145 LOCATE 25,10:INPUT;"Do you want to perform another binomial calculation?    ",A$:IF A$="y" OR A$="Y" THEN 20
150 LOCATE 23,1:END
155 IF P<.000001 THEN PRINT "< 10 (-6)"; ELSE IF P>.95 THEN PRINT "> .95"; ELSE PRINT "= ";P;
160 RETURN
165 LOCATE 25,24:PRINT "Please enter integers only.";
170 BEEP:LOCATE AR,AC:PRINT "     ":RETURN
5000 BEEP:IF ERR<>53 AND ERR<>71 THEN 5010 ELSE LOCATE 10,10:PRINT "Please place EPISTAT in drive A: (or other default).":PRINT TAB(25);"Press any key to continue:"
5005 A$=INKEY$:IF A$="" THEN 5005 ELSE RESUME
5010 ON ERROR GOTO 0:END
